read.matrix.hb(system.file("HBdata","lsq.rra",package = "SparseM"))-> hb.o
class(hb.o) # -> [1] "matrix.csc.hb"
model.matrix(hb.o)->design.o
class(design.o) # -> "matrix.csr"
dim(design.o) # -> [1] 1850  712
y <- model.response(hb.o) # extract the rhs
class(y) # -> numeric
length(y) # [1] 1850
t(design.o)%*%design.o -> XpX #X'X
t(design.o)%*%y -> Xpy  #X'y
chol(XpX)->chol.o
class(chol.o)  # "matrix.csr.chol"
backsolve(chol.o,Xpy)-> b1 # least squares solutions in two steps
b1[1:10]
solve(XpX,Xpy) -> b2 # least squares estimates in one step
back.solve(chol.o, forward.solve(chol.o, Xpy)) -> b3 # least squares solutions
                                                     # in 3 steps
b2[1:10]
solve(XpX) -> XpX.inv  # (X'X)^-1
class(XpX) # -> "matrix.csr"
diag(XpX %*% XpX.inv) # diagonal of the 712 x 712 identity matrix
unix.time(solve(XpX)) # faster
unix.time(solve(as.matrix(XpX))) # much slower
image(XpX)
